package com.feinno.urcs.group.services;

import com.feinno.urcs.group.entity.*;
import org.helium.framework.annotations.ServiceInterface;
import org.helium.http.webservice.WebServiceImplementation;

import javax.jws.*;
import javax.xml.ws.WebServiceProvider;


/**
 * @author Li.Hongbo <lihongbo@feinno.com>
 */
@WebService
@WebServiceProvider
@ServiceInterface(id = "group:GroupListService")
public interface GroupListService {
	/**
	 * 用户订阅群列表
	 */
	@WebMethod(operationName = "GetGroupList")
	@WebResult(name = "GetGroupListResp")
	public GetGroupListResp getGroupList(@WebParam(name = "GetGroupListReq") GetGroupListReq args);

	/**
	 * 用户群列表增加群
	 */
	@WebMethod(operationName = "AddGroup")
	@WebResult(name = "AddGroupResp")
	public GroupListResp addGroup(@WebParam(name = "AddGroupReq") AddGroupReq args);

	/**
	 * 用户群列表删除群
	 */
	@WebMethod(operationName = "DelGroup")
	@WebResult(name = "DelGroupResp")

	public GroupListResp delGroup(@WebParam(name = "DelGroupReq") DelGroupReq args);

	/**
	 * 群名称变更-群列表更新
	 */
	@WebMethod(operationName = "UpdGrpName")
	@WebResult(name = "UpdGrpNameResp")
	public GroupListResp updGrpName(@WebParam(name = "UpdGrpNameReq") UpdGrpNameReq args);

	/**
	 * 群管理员变更-群列表更新
	 */
	@WebMethod(operationName = "ChgGrpAdmin")
	@WebResult(name = "ChgGrpAdminResp")
	public GroupListResp chgGrpAdmin(@WebParam(name = "ChgGrpAdminReq") ChgGrpAdminReq args);

	/**
	 * 用户群列表数量查询接口
	 */
	@WebMethod(operationName = "QryGrpCount")
	@WebResult(name = "QryGrpCountResp")
	public QryGrpCountResp qryGrpCount(@WebParam(name = "QryGrpCountReq") QryGrpCountReq args);


	/**
	 * 解散群
	 */
	@WebMethod(operationName = "DismissGroup")
	@WebResult(name = "DismissGroupResp")
	public GroupListResp dismissGroup(@WebParam(name = "DismissGroupReq") DismissGroupReq args);

}
